package com.literaryfamily.literaryfamily.service.notifications;

import com.literaryfamily.literaryfamily.entity.Messages;
import com.literaryfamily.literaryfamily.entity.User;

/**
 * 系统通知接口,需要向用户发送通知时调用
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 * @author 滑稽/因果报应
 */
public interface MessageNotificationService {
	/**
	 * 通知某个用户
	 * @param userId 通知的用户
	 * @param messages 消息
	 * @return 操作结果
	 */
	Messages messageUser(Long userId, Messages messages);

	/**
	 * 发布公告,可以的做法:用户上限时检查用户是否阅读过公告,没有就调用上面的方法发送公告通知后记录已读
	 * @param messages 公告内容
	 * @return 操作结果
	 */
	Messages messageAllUser( Messages messages);

	/**
	 * 使用短信通知用户
	 * @param users
	 * @param messages
	 * @return 操作结果
	 */
	Messages messageUser(User users, Messages messages);

	/**
	 * 标记某条消息为已读
	 * @param messageId 消息ID
	 * @return 操作结果
	 */
	Messages markAsRead(Long messageId);

	/**
	 * 获取某条通知内容
	 * @param msgId 通知ID
	 * @return 对应通知
	 */
	Messages getUserMessages(Long msgId);

}